/**
 * 
 */
package com.hexacta.hrs.services.report;

import java.io.ByteArrayOutputStream;
import java.util.Map;

/**
 * @author mfunes
 *
 */
public interface ReportService {

	/**
	 * Crea el reporte especificado por el parametro.
	 * @param reportName el nombre del reporte a crear.
	 * @return devuelve una concatenacion de bytes que conforman un pdf.
	 */
	ByteArrayOutputStream createPDFReport(String reportName);
	
	/**
	 * Crea el reporte especificado por el parametro.
	 * @param reportName el nombre del reporte a crear.
	 * @param filters Mapa de filtros a aplicar en el reporte.
	 * @param parameters Mapa de parametros para los reportes
	 * @return devuelve una concatenacion de bytes que conforman un pdf.
	 */
	ByteArrayOutputStream createPDFReport(String reportName, Map<String, Object> filters, Map<String, Object> parameters);
	
	/**
	 * Crea el reporte Excel especificado por el parametro.
	 * @param reportName el nombre del reporte a crear.
	 * @return devuelve una concatenacion de bytes que conforman un xls.
	 */
	ByteArrayOutputStream createXLSReport(String reportName);
	
	/**
	 * Crea el reporte especificado por el parametro.
	 * @param reportName el nombre del reporte a crear.
	 * @param filters Mapa de filtros a aplicar en el reporte.
	 * @param parameters Mapa de parametros para los reportes
	 * @return devuelve una concatenacion de bytes que conforman un xls.
	 */
	ByteArrayOutputStream createXLSReport(String reportName, Map<String, Object> filters, Map<String, Object> parameters);
	
	/**
	 * Indica si el reporte acepta  filtros.
	 * @param reportName Nombre del reporte.
	 * @return devuelve el nombre del Action o vacio si no existe.
	 */
	String reportAcceptFilters(String reportName);
}
